package gov.nasa.anml.lifted;


import gov.nasa.anml.PDDL;
import gov.nasa.anml.State;
import gov.nasa.anml.PDDL.*;
import gov.nasa.anml.PDDL.Time;
import gov.nasa.anml.utility.SimpleFloat;
import gov.nasa.anml.utility.SimpleObject;

public abstract class BinaryExpression<I extends SimpleObject<? super I>,V extends SimpleObject<? super V>,S extends SimpleObject<? super S>>  extends ChainableExpressionImp<V,S> {
	public Expression<I,S> left;
	public Expression<I,?> right;
	
	public BinaryExpression(Expression<I,S> l,Expression<I,?> r) {
		left = l;
		right = r;
	}
	
	public TypeCode typeCode() {
		return left.typeCode();
	}
	
	public History<S> storage(State p, State c) {
		return left.storage(p,c);
		
	}
	
	public void translateDecl(PDDL pddl, Interval unit) {
		left.translateDecl(pddl,unit);
		right.translateDecl(pddl,unit);
	}
	
	public PDDL.Expression translateLValue(PDDL pddl,Interval unit) {
		return left.translateLValue(pddl,unit);
	}

	/*
	public V clone() {
		return this.value();
	}
	public V value() {
		return this.value(null);
	}
	public int compareTo(SimpleObject<V> v) {
		return this.value().compareTo(v);
	}
	public void assign(V v) {
		
	}*/
	
}


